ADOC = asciidoctor
ADOC_FLAGS =
SED = sed
HTML_TO_TXT = w3m -dump -T text/html

MAN_FILES = chrony.conf.man chronyc.man chronyd.man
TXT_FILES = faq.txt installation.txt
HTML_FILES = $(MAN_FILES:%.man=%.html) $(TXT_FILES:%.txt=%.html)
MAN_IN_FILES = $(MAN_FILES:%.man=%.man.in)

SYSCONFDIR = @SYSCONFDIR@
BINDIR = @BINDIR@
SBINDIR = @SBINDIR@
MANDIR = @MANDIR@
DOCDIR = @DOCDIR@
CHRONYRUNDIR = @CHRONYRUNDIR@
CHRONYVARDIR = @CHRONYVARDIR@
CHRONY_VERSION = @CHRONY_VERSION@
DEFAULT_USER = @DEFAULT_USER@
DEFAULT_CHRONYC_USER = @DEFAULT_CHRONYC_USER@
DEFAULT_HWCLOCK_FILE = @DEFAULT_HWCLOCK_FILE@
DEFAULT_PID_FILE = @DEFAULT_PID_FILE@
DEFAULT_RTC_DEVICE = @DEFAULT_RTC_DEVICE@

SED_COMMANDS = "s%\@SYSCONFDIR\@%$(SYSCONFDIR)%g;\
	       s%\@BINDIR\@%$(BINDIR)%g;\
	       s%\@SBINDIR\@%$(SBINDIR)%g;\
	       s%\@CHRONY_VERSION\@%$(CHRONY_VERSION)%g;\
	       s%\@DEFAULT_HWCLOCK_FILE\@%$(DEFAULT_HWCLOCK_FILE)%g;\
	       s%\@DEFAULT_PID_FILE\@%$(DEFAULT_PID_FILE)%g;\
	       s%\@DEFAULT_RTC_DEVICE\@%$(DEFAULT_RTC_DEVICE)%g;\
	       s%\@DEFAULT_USER\@%$(DEFAULT_USER)%g;\
	       s%\@DEFAULT_CHRONYC_USER\@%$(DEFAULT_CHRONYC_USER)%g;\
	       s%\@CHRONYRUNDIR\@%$(CHRONYRUNDIR)%g;\
	       s%\@CHRONYVARDIR\@%$(CHRONYVARDIR)%g;"

man: $(MAN_FILES) $(MAN_IN_FILES)
html: $(HTML_FILES)
txt: $(TXT_FILES)
docs: man html

%.html: %.adoc
	$(ADOC) $(ADOC_FLAGS) -b html -o - $< | $(SED) -e $(SED_COMMANDS) > $@

%.man.in: %.adoc
	$(ADOC) $(ADOC_FLAGS) -b manpage -o $@ $<

%.man: %.man.in
	$(SED) -e $(SED_COMMANDS) < $< > $@

%.txt: %.html
	$(HTML_TO_TXT) < $< > $@

install: $(MAN_FILES)
	[ -d $(DESTDIR)$(MANDIR)/man1 ] || mkdir -p $(DESTDIR)$(MANDIR)/man1
	[ -d $(DESTDIR)$(MANDIR)/man5 ] || mkdir -p $(DESTDIR)$(MANDIR)/man5
	[ -d $(DESTDIR)$(MANDIR)/man8 ] || mkdir -p $(DESTDIR)$(MANDIR)/man8
	cp chronyc.man $(DESTDIR)$(MANDIR)/man1/chronyc.1
	chmod 644 $(DESTDIR)$(MANDIR)/man1/chronyc.1
	cp chronyd.man $(DESTDIR)$(MANDIR)/man8/chronyd.8
	chmod 644 $(DESTDIR)$(MANDIR)/man8/chronyd.8
	cp chrony.conf.man $(DESTDIR)$(MANDIR)/man5/chrony.conf.5
	chmod 644 $(DESTDIR)$(MANDIR)/man5/chrony.conf.5

install-docs: $(HTML_FILES)
	[ -d $(DESTDIR)$(DOCDIR) ] || mkdir -p $(DESTDIR)$(DOCDIR)
	for f in $(HTML_FILES); do \
	  cp $$f $(DESTDIR)$(DOCDIR); \
	  chmod 644 $(DESTDIR)$(DOCDIR)/$$f; \
	done

clean:
	rm -f $(MAN_FILES) $(TXT_FILES) $(HTML_FILES)
	rm -f $(MAN_IN_FILES)

distclean:
	rm -f $(MAN_FILES) $(TXT_FILES) $(HTML_FILES)
	rm -f Makefile
